Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Enzo de Brito Ferber em 27/06/2007    [ 5035 hits ]

Login: EnzoFerber, 350063 pontos

Homepage: http://www.lapdm.com.br/   


Descrição

Como o nome já diz, um programa escrito em C, que decompõe um número qualquer em fatores primos e exibe estes números para o usuário.

[ Download: decom_primes.c ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

/*
* Programa: Decompositor de numeros
* Arquivo : decom_primes.c
* Autor   : Enzo Ferber 'Slackware_10'
*/

#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

int *lista_primos(int size){
    int prime, i=0, a, b;
    int *list = (int*)malloc(size*sizeof(int));
    if(!list){
        printf("[-] Erro ao alocar memoria.\n");
        printf("[-] Abortando...\n");
        exit(0);
    }
    for(a=2;a<size;a++){
        prime = FALSE;
        for(b=1;b<=a;b++){
            if(b == a) prime = TRUE;
            if(((a%b)==0) && (b != 1)) break;
        }
        if(prime) list[i] = a;
        if(prime) i += 1;
    }
    list[i] = 0x0;
    return list;
}

int *fatores_primos(int num){
    int *lista = lista_primos(num+1);
    int *fatores = (int*)malloc(num*sizeof(int));
    register int i;
    int div_atual, fat_atual, list_ref, ref;
    
    ref = num;
    fat_atual = 0;
    list_ref = 0;
    div_atual = lista[list_ref];
    
    for(i=0; i<num; i++){
        if(ref == 1){
            fatores[fat_atual] = 1;
            break;
        }
        if((ref % div_atual) == 0){
            ref = ref / div_atual;
            fatores[fat_atual] = div_atual;
            fat_atual++;
        }
        if((ref % div_atual) != 0) div_atual = lista[++list_ref];
    }
    
    free(lista);
    fatores[fat_atual+1] = 0x0;
    return fatores;
}

int main(int argc, char *argv[]){
    int *list;
    if(argc != 2){
        printf("[-] Uso: %s <numero_a_fatorar>\n", argv[0]);
        printf("[-] Abortando...\n");
        exit(0);
    }
    list = fatores_primos(atoi(argv[1]));
    while(*list) printf("%d\n", *list++);
    return 0;
}

    

    

Scripts recomendados
   Script Linux recomendado SIMULADOR DE DADOS DE RPG VAMPIRO A MÁSCARA - Corrigido
   Script Linux recomendado Fila.h
   Script Linux recomendado Menu com teclas direcionais
   Script Linux recomendado Jogo Tetris em C - parte 2
   Script Linux recomendado HaiDownlodManager - simples programa para baixar arquivos

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.